# -*- coding: utf-8 -*-
"""
@Time    : 2022/9/22 20:32
@Author  : JackXia
@Email   : 915624876@qq.com
@QQ      : 915624876
@File    : 剑指 Offer 45. 把数组排成最小的数.py
@Software: PyCharm
"""

"""
剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。

 

示例 1:

输入: [10,2]
输出: "102"
示例 2:

输入: [3,30,34,5,9]
输出: "3033459"
 

提示:

0 < nums.length <= 100
说明:

输出结果可能非常大，所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导 0，最后结果不需要去掉前导 0
"""


class Solution(object):
    def minNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: str
        """
        l1 = []
        l2_not_zero = []

        for i in nums:
            for s in str(i):
                l1.append(s)
                if s != '0':
                    l2_not_zero.append(int(s))
        min_num = min(l2_not_zero)
        l1.sort()
        l1.pop(min_num)
        return str(min_num) + ''.join(l1)


if __name__ == '__main__':
    nums = [10, 2, 1]
    print(Solution().minNumber(nums))
